Fix smp_processor_id to be linked to correct processor id under vcpu, which is
authordjm@kirby.fc.hp.com <djm@kirby.fc.hp.com>
Wed, 21 Dec 2005 14:40:16 +0000 (08:40 -0600)
committerdjm@kirby.fc.hp.com <djm@kirby.fc.hp.com>
Wed, 21 Dec 2005 14:40:16 +0000 (08:40 -0600)
commit2d2a310ebe47f80710e6e421ee242aad5b14d17e
tree530e8fa09d0039bfcb92941f7a1bf2d0a3e64cb3
parent4649e71f3fa3d23a6425a25d019a297cc5fb595e
Fix smp_processor_id to be linked to correct processor id under vcpu, which is
the exact one updated by scheduler. Or else easy to think how things get
messed under SMP environment. One phenomenon observed is about softirq.
Exit path on CPU1 checks pending indicator by local_cpu_data, and then
goto do_softirq if pending true. However do_softirq uses cpu_data(cpu)
to query pending bit again. Cpu index is aquired from smp_processor_id,
with thread_info->cpu not cared by scheduler. Finally do_softirq on CPU1
tries to operate percpu data on CPU0 then.

Also disable several prints within critical path, like sending IPI. Due to
slow serial speed, this will slow down overall performance heavily since
event channels among CPUs are in traffic.

This patch is necessary for host SMP.

Signed-off-by Kevin Tian <kevin.tian@intel.com>
xen/arch/ia64/linux-xen/irq_ia64.c
xen/arch/ia64/linux-xen/smp.c
xen/arch/ia64/vmx/vmx_irq_ia64.c
xen/include/asm-ia64/config.h